package Linkedlists;

public class ListMerge {
    public static class ListNode{
        int val;
        ListNode next;
        ListNode(int val){this.val=val;}
        ListNode(int val,ListNode next){this.val=val;this.next=next;}
    }

    public ListNode mergeTwoLists(ListNode headA,ListNode headB){
        ListNode newH=new ListNode(0);
        ListNode temp=newH;
        while(headA!=null&&headB!=null){
            if(headA.val<headB.val){
                temp.next=headA;
                headA=headA.next;
                temp=temp.next;
            }else{
                temp.next=headB;
                headB=headB.next;
                temp=temp.next;
            }
        }
        if(headA!=null){
            temp.next=headA;
        }
        if(headB!=null){
            temp.next=headB;
        }
        return newH.next;
    }
    public static void main(String[] args) {

        //ListMerge 是一个包含 mergeTwoLists 方法的类，用于合并两个链表。
       ListMerge merger=new ListMerge();
       ListNode headA=new ListNode(1);
       headA.next=new ListNode(2);
       headA.next.next=new ListNode(4);

       ListNode headB=new ListNode(1);
       headB.next=new ListNode(3);
       headB.next.next=new ListNode(4);

       ListNode merged=merger.mergeTwoLists(headA,headB);//合并链表
    //调用 mergeTwoLists 方法，传入 headA 和 headB。
        //该方法会：
        //比较两个链表的当前节点值（headA.val 和 headB.val）。
        //将较小的节点链接到结果链表中，并移动对应链表的指针。
        //如果其中一个链表遍历完，直接将另一个链表的剩余部分链接到结果中。
        //返回合并后的链表头节点（merged）。
        while(merged!=null){
            System.out.println(merged.val+" ");
            merged=merged.next;
        }
    }
}


